'-----------------------------------------------------------------
'             PT DC Hub @ Direct Connect P2P Network
'-----------------------------------------------------------------
'       Developer: Carlos Ferreira (fLaSh) - Portugal
'          E-mail: carlosferreiracarlos@hotmail.com
' Project started: 10 - September - 2006
'         License: GNU General Public License.
'-----------------------------------------------------------------
'       Thanks to developers and contributores of SDCH/DDCH
'         The Left Hand, ButterflySoul, HaArD and Selyb
'  TheNOP, RollTheDice, JDommi, GhOstFaCE, ArchaicLight and TUFF
'-----------------------------------------------------------------
Option Explicit On
Option Strict Off
Imports System.Collections
Imports System.Runtime.InteropServices

Namespace ShadowsClasses
    '------------------------------------------------------------------
    'Purpose:   The VB6 objects (classes, forms, controls, etc..)
    '           is not compatible with CRL Luainterface..
    '           This classes make a VB6 to .NET "emulation" objects 
    '           "back Shadows classes objects" called by scripts
    '           We can only like this use Lua in VB6 (with luainterface) ;-)
    '------------------------------------------------------------------
    <ComVisible(False)> _
    Public Class clsHub
        Private m_objHub As Object
        Public Sub New()
            m_objHub = Core.GetGlbObject("g_colUsers")
        End Sub
        'Required for For/Each --------------------------
        Public Function GetEnumerator() As IEnumerator
            'Required for For/Each
            Return GetOnlineUsers().GetEnumerator
        End Function
        Private Function GetOnlineUsers() As clsUser()
            Dim curUsers() As clsUser = Nothing
            For Each tUser As Object In m_objHub
                If IsNothing(curUsers) Then
                    ReDim curUsers(0)
                Else
                    ReDim Preserve curUsers(UBound(curUsers) + 1)
                End If
                curUsers(UBound(curUsers)) = New clsUser(tUser)
            Next
            Return curUsers
        End Function
        '------------------------------------------------
        Public ReadOnly Property oUsers() As Object
            Get

                Return m_objHub.oUsers
            End Get
        End Property
        Public ReadOnly Property oLoggingIn() As Object
            Get
                Return m_objHub.oUsers
            End Get
        End Property
        Public ReadOnly Property oNames() As Object
            Get
                Return m_objHub.oUsers
            End Get
        End Property
        Public ReadOnly Property colLoggingIn() As Object
            Get
                Return m_objHub.colLoggingIn
            End Get
        End Property
        Public Property iTotalBytesShared() As Double
            Get
                Return m_objHub.iTotalBytesShared
            End Get
            Set(ByVal Value As Double)
                m_objHub.iTotalBytesShared = Value
            End Set
        End Property
        Public ReadOnly Property iPeakBytesShared() As Double
            Get
                Return m_objHub.iPeakBytesShared
            End Get
        End Property
        Public ReadOnly Property NickList() As String
            Get
                Return m_objHub.NickList
            End Get
        End Property
        Public ReadOnly Property OpList() As String
            Get
                Return m_objHub.OpList
            End Get
        End Property
        Public ReadOnly Property Count() As Integer
            Get
                Return m_objHub.Count
            End Get
        End Property
        Public ReadOnly Property PeakUsers() As Integer
            Get
                Return m_objHub.PeakUsers
            End Get
        End Property
        Public ReadOnly Property OpCount() As Integer
            Get
                Return m_objHub.OpCount
            End Get
        End Property
        Public ReadOnly Property PeakOps() As Integer
            Get
                Return m_objHub.PeakOps
            End Get
        End Property
        Public Function Exists(ByVal intIndex As Short) As Integer
            Return m_objHub.Exists(intIndex)
        End Function
        Public Function Online(ByVal strName As String) As Boolean
            Return CBool(m_objHub.Online(strName))
        End Function
        Public Function ItemByWinsockIndex(ByVal intIndex As Short) As clsUser
            Dim oUser As Object = m_objHub.ItemByWinsockIndex(intIndex)
            Dim cUser As New clsUser(oUser)
            Return cUser
        End Function
        Public Function ItemByName(ByVal strName As String) As clsUser
            Dim oUser As Object = m_objHub.ItemByName(CStr(strName))
            Dim cUser As New clsUser(oUser)
            Return cUser
        End Function
        Public Function ItemByIP(ByVal strIP As String) As clsUser
            Dim oUser As Object = m_objHub.ItemByIP(strIP)
            Dim cUser As New clsUser(oUser)
            Return cUser
        End Function
        Public Function ItemByRandom() As clsUser
            Dim oUser As Object = m_objHub.ItemByRandom
            Dim cUser As New clsUser(oUser)
            Return cUser
        End Function
        Public Function CheckList(ByVal strName As String) As Boolean
            Return m_objHub.CheckList(strName)
        End Function
        Public Sub AppendNL(ByVal strName As String, ByVal blnOperator As Boolean)
            m_objHub.AppendNL(strName, blnOperator)
        End Sub
        Public Sub RemoveNL(ByVal strName As String, ByVal blnOperator As Boolean)
            m_objHub.RemoveNL(strName, blnOperator)
        End Sub
        Public Sub SendToAll(ByVal strData As String)
            m_objHub.SendToAll(strData)
        End Sub
        Public Sub SendChatToAll(ByVal strFrom As String, ByVal strMessage As String)
            m_objHub.SendChatToAll(strFrom, strMessage)
        End Sub
        Public Sub SendPrivateToAll(ByVal strFrom As String, ByVal strMessage As String)
            m_objHub.SendPrivateToAll(strFrom, strMessage)
        End Sub
        Public Sub SendToOps(ByVal strData As String)
            m_objHub.SendToOps(strData)
        End Sub
        Public Sub SendToUnReg(ByVal strData As String)
            m_objHub.SendToUnReg(strData)
        End Sub
        Public Sub SendChatToOps(ByVal strFrom As String, ByVal strMessage As String)
            m_objHub.SendChatToOps(strFrom, strMessage)
        End Sub
        Public Sub SendChatToUnReg(ByVal strFrom As String, ByVal strMessage As String)
            m_objHub.SendChatToUnReg(strFrom, strMessage)
        End Sub
        Public Sub SendPrivateToOps(ByVal strFrom As String, ByVal strMessage As String)
            m_objHub.SendPrivateToOps(strFrom, strMessage)
        End Sub
        Public Sub SendPrivateToUnReg(ByVal sName As String, ByVal strMessage As String)
            m_objHub.SendPrivateToUnReg(sName, strMessage)
        End Sub
        Public Sub SendToNQ(ByVal strData As String)
            m_objHub.SendToNQ(strData)
        End Sub
        Public Sub SendToNA(ByVal strData As String)
            m_objHub.SendToNA(strData)
        End Sub
        Public Sub SendChatToUser(ByVal strUserName As String, ByVal strFrom As String, ByVal strMessage As String)
            m_objHub.SendChatToUser(strUserName, strFrom, strMessage)
        End Sub
        Public Sub SendPrivateToUser(ByVal strUserName As String, ByVal strFrom As String, ByVal strMessage As String)
            m_objHub.SendChatToUser(strUserName, strFrom, strMessage)
        End Sub
        Public Sub RedirectAll(Optional ByVal strAddress As String = "")
            m_objHub.RedirectAll(strAddress)
        End Sub
        Public Sub RedirectNonOps(Optional ByVal strAddress As String = "")
            m_objHub.RedirectNonOps(strAddress)
        End Sub
    End Class

    <ComVisible(False)> _
    Public Class clsUser
        Private m_objUser As Object
        Public Sub New(ByVal oUser As Object)
            m_objUser = oUser
        End Sub
        Public Property sName() As String
            Get
                Dim strTemp As String = ""
                Try
                    strTemp = m_objUser.sName
                Catch : End Try
                If String.IsNullOrEmpty(strTemp) Then
                    strTemp = ""
                End If
                Return strTemp
            End Get
            Set(ByVal Value As String)
                m_objUser.sName = Value
            End Set
        End Property
        Public ReadOnly Property sIP() As String
            Get
                Return m_objUser.IP
            End Get
        End Property
        Public ReadOnly Property IP() As String
            Get
                Return m_objUser.IP
            End Get
        End Property
        Public Property sMyInfoFakeString() As String
            Get
                Return m_objUser.sMyInfoFakeString
            End Get
            Set(ByVal Value As String)
                m_objUser.sMyInfoFakeString = Value
            End Set
        End Property
        Public ReadOnly Property MyINFO(Optional ByVal iType As Integer = 0) As Object
            Get
                Return m_objUser.MyINFO(iType)
            End Get
        End Property
        Public Property Supports() As String
            Get
                Return m_objUser.Supports
            End Get
            Set(ByVal Value As String)
                m_objUser.Supports = Value
            End Set
        End Property
        Public ReadOnly Property ConnectedSince() As Date
            Get
                Return m_objUser.ConnectedSince
            End Get
        End Property
        Public Property iBytesShared() As Double
            Get
                Return m_objUser.iBytesShared
            End Get
            Set(ByVal Value As Double)
                m_objUser.iBytesShared = Value
            End Set
        End Property
        Public Property iVersion() As Double
            Get
                Return m_objUser.iVersion
            End Get
            Set(ByVal Value As Double)
                m_objUser.iVersion = Value
            End Set
        End Property
        Public Property iWinsockIndex() As Short
            Get
                Return m_objUser.iWinsockIndex
            End Get
            Set(ByVal Value As Short)
                m_objUser.iWinsockIndex = Value
            End Set
        End Property
        Public Property QNL() As Boolean
            Get
                Return m_objUser.QNL
            End Get
            Set(ByVal Value As Boolean)
                m_objUser.QNL = Value
            End Set
        End Property
        Public Property QuickList() As Boolean
            Get
                Return m_objUser.QuickList
            End Get
            Set(ByVal Value As Boolean)
                m_objUser.QuickList = Value
            End Set
        End Property
        Public Property NoHello() As Boolean
            Get
                Return m_objUser.NoHello
            End Get
            Set(ByVal Value As Boolean)
                m_objUser.NoHello = Value
            End Set
        End Property
        Public Property ZLine() As Boolean
            Get
                Return m_objUser.ZLine
            End Get
            Set(ByVal Value As Boolean)
                m_objUser.ZLine = Value
            End Set
        End Property
        Public Property ZPipe() As Boolean
            Get
                Return m_objUser.ZLine
            End Get
            Set(ByVal Value As Boolean)
                m_objUser.ZPipe = Value
            End Set
        End Property
        Public ReadOnly Property bOperator() As Boolean
            Get
                Return m_objUser.bOperator
            End Get
        End Property
        Public ReadOnly Property Visible() As Boolean
            Get
                Return m_objUser.Visible
            End Get
        End Property
        Public Property IsAFK() As Boolean
            Get
                Return m_objUser.IsAFK
            End Get
            Set(ByVal Value As Boolean)
                m_objUser.IsAFK = Value
            End Set
        End Property
        Public Property Mute() As Boolean
            Get
                Return m_objUser.Mute
            End Get
            Set(ByVal Value As Boolean)
                m_objUser.Mute = Value
            End Set
        End Property
        Public Property Passive() As Boolean
            Get
                Return m_objUser.Passive
            End Get
            Set(ByVal Value As Boolean)
                m_objUser.Passive = Value
            End Set
        End Property
        Public Property UserCommand() As Boolean
            Get
                Return m_objUser.UserCommand
            End Get
            Set(ByVal Value As Boolean)
                m_objUser.UserCommand = Value
            End Set
        End Property
        Public Property ChatOnly() As Boolean
            Get
                Return m_objUser.ChatOnly
            End Get
            Set(ByVal Value As Boolean)
                m_objUser.ChatOnly = Value
            End Set
        End Property
        Public Property NetInfo() As Boolean
            Get
                Return m_objUser.NetInfo
            End Get
            Set(ByVal Value As Boolean)
                m_objUser.NetInfo = Value
            End Set
        End Property
        Public Property [Class]() As Integer
            Get
                Return m_objUser.Class
            End Get
            Set(ByVal Value As Integer)
                m_objUser.Class = Value
            End Set
        End Property
        Public Property State() As Integer
            Get
                Return m_objUser.State
            End Get
            Set(ByVal Value As Integer)
                m_objUser.State = Value
            End Set
        End Property
        Public Property Winsock() As Object
            Get
                Return m_objUser.Winsock
            End Get
            Set(ByVal Value As Object)
                m_objUser.Winsock = Value
            End Set
        End Property
        Public Property sLanguageID() As String
            Get
                Return m_objUser.sLanguageID
            End Get
            Set(ByVal Value As String)
                m_objUser.sLanguageID = Value
            End Set
        End Property
        Public Property NullCharSeparator() As Boolean
            Get
                Return m_objUser.NullCharSeparator
            End Get
            Set(ByVal Value As Boolean)
                m_objUser.NullCharSeparator = Value
            End Set
        End Property
        Friend Function FloodCheck(ByVal bytID As Byte) As Boolean
            Return m_objUser.FloodCheck(bytID)
        End Function
        Public Sub SendData(ByVal strData As String)
            m_objUser.SendData(strData)
        End Sub
        Public Sub SendChat(ByVal strFrom As String, ByVal strMessage As String)
            m_objUser.SendChat(strFrom, strMessage)
        End Sub
        Public Sub SendChatLng(ByVal strFrom As String, ByVal sLngName As String)
            m_objUser.SendChatLng(strFrom, sLngName)
        End Sub
        Public Sub SendPrivate(ByVal strFrom As String, ByVal strMessage As String, Optional ByVal strOtherFrom As String = "")
            m_objUser.SendPrivate(strFrom, strMessage, strOtherFrom)
        End Sub
        Public Sub SendPrivateLng(ByVal strFrom As String, ByVal sLngName As String, Optional ByVal strOtherFrom As String = "")
            m_objUser.SendPrivateLng(strFrom, sLngName, strOtherFrom)
        End Sub
        Public Sub Redirect(Optional ByVal strAddress As String = "")
            m_objUser.Redirect(strAddress)
        End Sub
        Public Sub Disconnect()
            m_objUser.Disconnect()
        End Sub
        Public Sub Kick(Optional ByVal lngMinutes As Integer = -1, Optional ByVal strBannedBy As String = "", Optional ByVal strReason As String = "")
            m_objUser.Kick(lngMinutes, strBannedBy, strReason)
        End Sub
        Public Function GetCoreMsgStr(ByVal strStringID As String) As String
            Return m_objUser.GetCoreMsgStr(strStringID)
        End Function
    End Class

    <ComVisible(False)> _
    Public Class clsCommand
        Private m_objCommand As Object
        Public Sub New(ByVal oCommand As Object)
            m_objCommand = oCommand
        End Sub
        Public Property [Class]() As Integer
            Get
                Return m_objCommand.[Class]
            End Get
            Set(ByVal Value As Integer)
                m_objCommand.Class = Value
            End Set
        End Property
        Public Property ID() As Integer
            Get
                Return m_objCommand.ID
            End Get
            Set(ByVal Value As Integer)
                m_objCommand.ID = Value
            End Set
        End Property
        Public Property Name() As String
            Get
                Return m_objCommand.Name
            End Get
            Set(ByVal Value As String)
                m_objCommand.Name = Value
            End Set
        End Property
        Public Property Enabled() As Boolean
            Get
                Return m_objCommand.Enabled
            End Get
            Set(ByVal Value As Boolean)
                m_objCommand.Enabled = Value
            End Set
        End Property
        Public Property Description() As String
            Get
                Return m_objCommand.Description
            End Get
            Set(ByVal Value As String)
                m_objCommand.Description = Value
            End Set
        End Property
    End Class

    <ComVisible(False)> _
    Public Class clsCommands
        Private m_objCommands As Object
        Public Sub New()
            m_objCommands = Core.GetGlbObject("g_colCommands")
        End Sub
        'Required for For/Each --------------------------
        Public Function GetEnumerator() As IEnumerator
            'Required for For/Each
            Return GetCommands().GetEnumerator
        End Function
        Private Function GetCommands() As clsCommand()
            Dim curDMC() As clsCommand = Nothing
            For Each tCMD As Object In m_objCommands
                If IsNothing(curDMC) Then
                    ReDim curDMC(0)
                Else
                    ReDim Preserve curDMC(UBound(curDMC) + 1)
                End If
                curDMC(UBound(curDMC)) = New clsCommand(tCMD)
            Next
            Return curDMC
        End Function
        '------------------------------------------------
        Public Function Add(ByVal intID As Integer, ByVal strName As String, ByVal strDescription As String, ByVal intClass As Integer, ByVal blnEnabled As Boolean) As Integer
            Return m_objCommands.Add(intID, strName, strDescription, CInt(intClass), blnEnabled)
        End Function
        Public Sub Edit(ByVal strOldName As String, ByVal strNewName As String, ByVal strDescription As String, ByVal intClass As Integer, ByVal blnEnabled As Boolean)
            m_objCommands.Edit(strOldName, strNewName, strDescription, intClass, blnEnabled)
        End Sub
        Public Sub Remove(ByVal strKey As String)
            m_objCommands.Remove(strKey)
        End Sub
        Public Sub Clear()
            m_objCommands.Clear()
        End Sub
        Public Function Item(ByVal strKey As String) As clsCommand
            Return New clsCommand(m_objCommands.Item(strKey))
        End Function
        Public Function Exists(ByVal strKey As String) As Boolean
            Return m_objCommands.Exists(strKey)
        End Function
    End Class

    <ComVisible(False)> _
    Public Class clsIPBans
        Private m_objIPBans As Object
        Public Sub New()
            m_objIPBans = Core.GetGlbObject("g_colIPBans")
        End Sub
        'Required for For/Each --------------------------
        Public Function GetEnumerator() As IEnumerator
            'Required for For/Each
            Return GetBans().GetEnumerator
        End Function
        Private Function GetBans() As String()
            Dim curBans() As String = Nothing
            For Each tCMD As Object In m_objIPBans
                If IsNothing(curBans) Then
                    ReDim curBans(0)
                Else
                    ReDim Preserve curBans(UBound(curBans) + 1)
                End If
                curBans(UBound(curBans)) = tCMD
            Next
            Return curBans
        End Function
        '------------------------------------------------
        Public Sub Add(ByVal strIP As String, Optional ByVal varMinutes As Object = -1, Optional ByVal strNick As String = "", Optional ByVal strBannedBy As String = "", Optional ByVal strReason As String = "", Optional ByVal bHidePopUp As Boolean = False)
            m_objIPBans.Add(strIP, varMinutes, strNick, strBannedBy, strReason, bHidePopUp)
        End Sub
        Public Sub Remove(ByVal strIP As String, Optional ByVal varEndIP As Object = "", Optional ByVal intType As Integer = 0)
            m_objIPBans.Remove(strIP, varEndIP, intType)
        End Sub
        Public Function Check(ByVal strIP As String) As Long
            m_objIPBans.Check(strIP)
        End Function
        Public Function GetRangesInIP(ByVal sIP As String) As String
            Return m_objIPBans.GetRangesInIP(sIP)
        End Function
        Public Sub RemRangesInIP(ByVal sIP As String)
            m_objIPBans.RemRangesInIP(sIP)
        End Sub
        Public Sub ClearTemp()
            m_objIPBans.ClearTemp()
        End Sub
        Public Sub ClearPerm()
            m_objIPBans.ClearPerm()
        End Sub
        Public Sub ClearRange()
            m_objIPBans.ClearRange()
        End Sub
        Public Function TempList() As String
            Return m_objIPBans.TempList()
        End Function
        Public Function PermList() As String
            Return m_objIPBans.PermList()
        End Function
        Public Function RangeList() As String
            Return m_objIPBans.RangeList()
        End Function
        Public ReadOnly Property TempItems() As Object
            Get
                Return m_objIPBans.TempItems()
            End Get
        End Property
        Public ReadOnly Property PermItems() As Object
            Get
                Return m_objIPBans.PermItems()
            End Get
        End Property
        Public ReadOnly Property RangeItems() As Object
            Get
                Return m_objIPBans.RangeItems()
            End Get
        End Property
    End Class

    <ComVisible(False)> _
    Public Class clsRegistered
        Private m_objRegistered As Object
        Public Sub New()
            m_objRegistered = Core.GetGlbObject("g_objRegistered")
        End Sub
        Public Function Add(ByVal strName As String, ByVal strPassword As String, ByVal intClass As Integer, Optional ByVal strAdminName As String = "Admin / GUI", Optional ByVal lngMin As Long = 0, Optional ByVal bHidePopUp As Boolean = False) As Integer
            Return m_objRegistered.Add(strName, strPassword, intClass, strAdminName, lngMin, bHidePopUp)
        End Function
        Public Function SetLanguage(ByVal strName As String, ByVal strLanguageID As String) As Integer
            Return m_objRegistered.SetLanguage(strName, strLanguageID)
        End Function
        Public Sub Remove(ByVal strName As String)
            m_objRegistered.Remove(strName)
        End Sub
        Public Function Registered(ByVal strName As String) As Integer
            Return m_objRegistered.Registered(strName)
        End Function
        Public Function Edit(ByVal strName As String, ByVal strPassword As String, ByVal intClass As Integer, Optional ByVal strAdminName As String = "Admin / GUI", Optional ByVal lngMin As Long = 0) As Integer
            Return m_objRegistered.Add(strName, strPassword, intClass, strAdminName, lngMin)
        End Function
        Public Function Rename(ByVal strOldName As String, ByVal strNewName As String) As Integer
            Return m_objRegistered.Add(strOldName, strNewName)
        End Function
        Public Function Check(ByVal strName As String, ByVal strPassword As String) As Integer
            Return m_objRegistered.Check(strName, strPassword)
        End Function
        Public Function GetInfo(ByVal strName As String, Optional ByVal strField As String = "all") As String
            Return m_objRegistered.GetInfo(strName, strField)
        End Function
        Public Function GetList(ByVal intSort As Integer, Optional ByVal intClass As Integer = 0) As String
            Return m_objRegistered.GetList(intSort, intClass)
        End Function
    End Class

    <ComVisible(False)> _
    Public Class clsSettings
        Private m_objSettings As Object
        Public Sub New()
            m_objSettings = Core.GetGlbObject("g_objSettings")
        End Sub
        Public Property HubName() As String
            Get
                Return m_objSettings.HubName
            End Get
            Set(ByVal Value As String)
                m_objSettings.HubName = Value
            End Set
        End Property
        Public Property HubDesc() As String
            Get
                Return m_objSettings.HubDesc
            End Get
            Set(ByVal Value As String)
                m_objSettings.HubDesc = Value
            End Set
        End Property
        Public Property HubIP() As String
            Get
                Return m_objSettings.HubIP
            End Get
            Set(ByVal Value As String)
                m_objSettings.HubIP = Value
            End Set
        End Property
        Public Property HubPassword() As String
            Get
                Return m_objSettings.HubPassword
            End Get
            Set(ByVal Value As String)
                m_objSettings.HubPassword = Value
            End Set
        End Property
        Public Property BotName() As String
            Get
                Return m_objSettings.BotName
            End Get
            Set(ByVal Value As String)
                m_objSettings.BotName = Value
            End Set
        End Property
        Public Property JoinMsg() As String
            Get
                Return m_objSettings.JoinMsg
            End Get
            Set(ByVal Value As String)
                m_objSettings.JoinMsg = Value
            End Set
        End Property
        Public Property RedirectIP() As String
            Get
                Return m_objSettings.RedirectIP
            End Get
            Set(ByVal Value As String)
                m_objSettings.RedirectIP = Value
            End Set
        End Property
        Public Property RedirectAddress() As String
            Get
                Return m_objSettings.RedirectAddress
            End Get
            Set(ByVal Value As String)
                m_objSettings.RedirectAddress = Value
            End Set
        End Property
        Public Property ForMinShareRedirectAddress() As String
            Get
                Return m_objSettings.ForMinShareRedirectAddress
            End Get
            Set(ByVal Value As String)
                m_objSettings.ForMinShareRedirectAddress = Value
            End Set
        End Property
        Public Property ForMaxShareRedirectAddress() As String
            Get
                Return m_objSettings.ForMaxShareRedirectAddress
            End Get
            Set(ByVal Value As String)
                m_objSettings.ForMaxShareRedirectAddress = Value
            End Set
        End Property
        Public Property ForMinSlotsRedirectAddress() As String
            Get
                Return m_objSettings.ForMinSlotsRedirectAddress
            End Get
            Set(ByVal Value As String)
                m_objSettings.ForMinSlotsRedirectAddress = Value
            End Set
        End Property
        Public Property ForMaxSlotsRedirectAddress() As String
            Get
                Return m_objSettings.ForMaxSlotsRedirectAddress
            End Get
            Set(ByVal Value As String)
                m_objSettings.ForMaxSlotsRedirectAddress = Value
            End Set
        End Property
        Public Property ForMaxHubsRedirectAddress() As String
            Get
                Return m_objSettings.ForMaxHubsRedirectAddress
            End Get
            Set(ByVal Value As String)
                m_objSettings.ForMaxHubsRedirectAddress = Value
            End Set
        End Property
        Public Property ForSlotPerHubRedirectAddress() As String
            Get
                Return m_objSettings.ForSlotPerHubRedirectAddress
            End Get
            Set(ByVal Value As String)
                m_objSettings.ForSlotPerHubRedirectAddress = Value
            End Set
        End Property
        Public Property ForNoTagRedirectAddress() As String
            Get
                Return m_objSettings.ForNoTagRedirectAddress
            End Get
            Set(ByVal Value As String)
                m_objSettings.ForNoTagRedirectAddress = Value
            End Set
        End Property
        Public Property ForTooOldDcppRedirectAddress() As String
            Get
                Return m_objSettings.ForTooOldDcppRedirectAddress
            End Get
            Set(ByVal Value As String)
                m_objSettings.ForTooOldDcppRedirectAddress = Value
            End Set
        End Property
        Public Property ForTooOldNMDCRedirectAddress() As String
            Get
                Return m_objSettings.ForTooOldNMDCRedirectAddress
            End Get
            Set(ByVal Value As String)
                m_objSettings.ForTooOldNMDCRedirectAddress = Value
            End Set
        End Property
        Public Property ForBWPerSlotRedirectAddress() As String
            Get
                Return m_objSettings.ForBWPerSlotRedirectAddress
            End Get
            Set(ByVal Value As String)
                m_objSettings.ForBWPerSlotRedirectAddress = Value
            End Set
        End Property
        Public Property ForFakeShareRedirectAddress() As String
            Get
                Return m_objSettings.ForFakeShareRedirectAddress
            End Get
            Set(ByVal Value As String)
                m_objSettings.ForFakeShareRedirectAddress = Value
            End Set
        End Property
        Public Property ForFakeTagRedirectAddress() As String
            Get
                Return m_objSettings.ForFakeTagRedirectAddress
            End Get
            Set(ByVal Value As String)
                m_objSettings.ForFakeTagRedirectAddress = Value
            End Set
        End Property
        Public Property ForPasModeRedirectAddress() As String
            Get
                Return m_objSettings.ForPasModeRedirectAddress
            End Get
            Set(ByVal Value As String)
                m_objSettings.ForPasModeRedirectAddress = Value
            End Set
        End Property
        Public Property RegisterIP() As String
            Get
                Return m_objSettings.RegisterIP
            End Get
            Set(ByVal Value As String)
                m_objSettings.RegisterIP = Value
            End Set
        End Property
        Public Property Ports() As String
            Get
                Return m_objSettings.Ports
            End Get
            Set(ByVal Value As String)
                m_objSettings.Ports = Value
            End Set
        End Property
        Public Property CSeperator() As String
            Get
                Return m_objSettings.CSeperator
            End Get
            Set(ByVal Value As String)
                m_objSettings.CSeperator = Value
            End Set
        End Property
        Public Property MaxHubsMsg() As String
            Get
                Return m_objSettings.MaxHubsMsg
            End Get
            Set(ByVal Value As String)
                m_objSettings.MaxHubsMsg = Value
            End Set
        End Property
        Public Property MinSlotsMsg() As String
            Get
                Return m_objSettings.MinSlotsMsg
            End Get
            Set(ByVal Value As String)
                m_objSettings.MinSlotsMsg = Value
            End Set
        End Property
        Public Property MaxSlotsMsg() As String
            Get
                Return m_objSettings.MaxSlotsMsg
            End Get
            Set(ByVal Value As String)
                m_objSettings.MaxSlotsMsg = Value
            End Set
        End Property
        Public Property DCppMinVersionMsg() As String
            Get
                Return m_objSettings.HSRatioMsg
            End Get
            Set(ByVal Value As String)
                m_objSettings.HSRatioMsg = Value
            End Set
        End Property
        Public Property HSRatioMsg() As String
            Get
                Return m_objSettings.HSRatioMsg
            End Get
            Set(ByVal Value As String)
                m_objSettings.HSRatioMsg = Value
            End Set
        End Property
        Public Property BSRatioMsg() As String
            Get
                Return m_objSettings.BSRatioMsg
            End Get
            Set(ByVal Value As String)
                m_objSettings.BSRatioMsg = Value
            End Set
        End Property
        Public Property MinShareMsg() As String
            Get
                Return m_objSettings.MinShareMsg
            End Get
            Set(ByVal Value As String)
                m_objSettings.MinShareMsg = Value
            End Set
        End Property
        Public Property NMDCMinVersionMsg() As String
            Get
                Return m_objSettings.NMDCMinVersionMsg
            End Get
            Set(ByVal Value As String)
                m_objSettings.NMDCMinVersionMsg = Value
            End Set
        End Property
        Public Property DenyNoTagMsg() As String
            Get
                Return m_objSettings.DenyNoTagMsg
            End Get
            Set(ByVal Value As String)
                m_objSettings.DenyNoTagMsg = Value
            End Set
        End Property
        Public Property MaxShareMsg() As String
            Get
                Return m_objSettings.MaxShareMsg
            End Get
            Set(ByVal Value As String)
                m_objSettings.MaxShareMsg = Value
            End Set
        End Property
        Public Property FakeShareMsg() As String
            Get
                Return m_objSettings.FakeShareMsg
            End Get
            Set(ByVal Value As String)
                m_objSettings.FakeShareMsg = Value
            End Set
        End Property
        Public Property FakeTagMsg() As String
            Get
                Return m_objSettings.FakeTagMsg
            End Get
            Set(ByVal Value As String)
                m_objSettings.FakeTagMsg = Value
            End Set
        End Property
        Public Property MassMessage() As String
            Get
                Return m_objSettings.MassMessage
            End Get
            Set(ByVal Value As String)
                m_objSettings.MassMessage = Value
            End Set
        End Property
        Public Property OpMassMessage() As String
            Get
                Return m_objSettings.OpMassMessage
            End Get
            Set(ByVal Value As String)
                m_objSettings.OpMassMessage = Value
            End Set
        End Property
        Public Property UnRegMassMessage() As String
            Get
                Return m_objSettings.UnRegMassMessage
            End Get
            Set(ByVal Value As String)
                m_objSettings.UnRegMassMessage = Value
            End Set
        End Property
        Public Property [Interface]() As String
            Get
                Return m_objSettings.[Interface]
            End Get
            Set(ByVal Value As String)
                m_objSettings.[Interface] = Value
            End Set
        End Property
        Public Property Socks5Msg() As String
            Get
                Return m_objSettings.Socks5Msg
            End Get
            Set(ByVal Value As String)
                m_objSettings.Socks5Msg = Value
            End Set
        End Property
        Public Property PassiveModeMsg() As String
            Get
                Return m_objSettings.PassiveModeMsg
            End Get
            Set(ByVal Value As String)
                m_objSettings.PassiveModeMsg = Value
            End Set
        End Property
        Public Property NoCOClientsMsg() As String
            Get
                Return m_objSettings.NoCOClientsMsg
            End Get
            Set(ByVal Value As String)
                m_objSettings.NoCOClientsMsg = Value
            End Set
        End Property
        Public Property HammeringRd() As String
            Get
                Return m_objSettings.HammeringRd
            End Get
            Set(ByVal Value As String)
                m_objSettings.HammeringRd = Value
            End Set
        End Property
        Public Property NoIPDNS1() As String
            Get
                Return m_objSettings.NoIPDNS1
            End Get
            Set(ByVal Value As String)
                m_objSettings.NoIPDNS1 = Value
            End Set
        End Property
        Public Property NoIPDNS2() As String
            Get
                Return m_objSettings.NoIPDNS2
            End Get
            Set(ByVal Value As String)
                m_objSettings.NoIPDNS2 = Value
            End Set
        End Property
        Public Property NoIPDNS3() As String
            Get
                Return m_objSettings.NoIPDNS3
            End Get
            Set(ByVal Value As String)
                m_objSettings.NoIPDNS3 = Value
            End Set
        End Property
        Public Property NoIPDNS4() As String
            Get
                Return m_objSettings.NoIPDNS4
            End Get
            Set(ByVal Value As String)
                m_objSettings.NoIPDNS4 = Value
            End Set
        End Property
        Public Property NoIPUser() As String
            Get
                Return m_objSettings.NoIPUser
            End Get
            Set(ByVal Value As String)
                m_objSettings.NoIPUser = Value
            End Set
        End Property
        Public Property NoIPPass() As String
            Get
                Return m_objSettings.NoIPPass
            End Get
            Set(ByVal Value As String)
                m_objSettings.NoIPPass = Value
            End Set
        End Property
        Public Property DynDNS1() As String
            Get
                Return m_objSettings.DynDNS1
            End Get
            Set(ByVal Value As String)
                m_objSettings.DynDNS1 = Value
            End Set
        End Property
        Public Property DynDNS2() As String
            Get
                Return m_objSettings.DynDNS2
            End Get
            Set(ByVal Value As String)
                m_objSettings.DynDNS2 = Value
            End Set
        End Property
        Public Property DynDNS3() As String
            Get
                Return m_objSettings.DynDNS3
            End Get
            Set(ByVal Value As String)
                m_objSettings.DynDNS3 = Value
            End Set
        End Property
        Public Property DynDNS4() As String
            Get
                Return m_objSettings.DynDNS4
            End Get
            Set(ByVal Value As String)
                m_objSettings.DynDNS4 = Value
            End Set
        End Property
        Public Property DynDNSUser() As String
            Get
                Return m_objSettings.DynDNSUser
            End Get
            Set(ByVal Value As String)
                m_objSettings.DynDNSUser = Value
            End Set
        End Property
        Public Property DynDNSPass() As String
            Get
                Return m_objSettings.DynDNSPass
            End Get
            Set(ByVal Value As String)
                m_objSettings.DynDNSPass = Value
            End Set
        End Property
        Public Property BotEmail() As String
            Get
                Return m_objSettings.BotEmail
            End Get
            Set(ByVal Value As String)
                m_objSettings.BotEmail = Value
            End Set
        End Property
        Public Property DefaultBanTime() As Long
            Get
                Return m_objSettings.DefaultBanTime
            End Get
            Set(ByVal Value As Long)
                m_objSettings.DefaultBanTime = Value
            End Set
        End Property
        Public Property ScriptTimeout() As Long
            Get
                Return m_objSettings.ScriptTimeout
            End Get
            Set(ByVal Value As Long)
                m_objSettings.ScriptTimeout = Value
            End Set
        End Property
        Public Property FWBanLength() As Long
            Get
                Return m_objSettings.FWBanLength
            End Get
            Set(ByVal Value As Long)
                m_objSettings.FWBanLength = Value
            End Set
        End Property
        Public Property Port() As Long
            Get
                Return m_objSettings.Port
            End Get
            Set(ByVal Value As Long)
                m_objSettings.Port = Value
            End Set
        End Property
        Public Property MaxMessageLen() As Long
            Get
                Return m_objSettings.MaxMessageLen
            End Get
            Set(ByVal Value As Long)
                m_objSettings.MaxMessageLen = Value
            End Set
        End Property
        Public Property DataFragmentLen() As Long
            Get
                Return m_objSettings.DataFragmentLen
            End Get
            Set(ByVal Value As Long)
                m_objSettings.DataFragmentLen = Value
            End Set
        End Property
        Public Property ConDropInterval() As Long
            Get
                Return m_objSettings.ConDropInterval
            End Get
            Set(ByVal Value As Long)
                m_objSettings.ConDropInterval = Value
            End Set
        End Property
        Public Property FWDropMsgInterval() As Long
            Get
                Return m_objSettings.FWDropMsgInterval
            End Get
            Set(ByVal Value As Long)
                m_objSettings.FWDropMsgInterval = Value
            End Set
        End Property
        Public Property DCMaxHubs() As Byte
            Get
                Return m_objSettings.DCMaxHubs
            End Get
            Set(ByVal Value As Byte)
                m_objSettings.DCMaxHubs = Value
            End Set
        End Property
        Public Property MaxSlots() As Byte
            Get
                Return m_objSettings.MaxSlots
            End Get
            Set(ByVal Value As Byte)
                m_objSettings.MaxSlots = Value
            End Set
        End Property
        Public Property DCOSlots() As Byte
            Get
                Return m_objSettings.DCOSlots
            End Get
            Set(ByVal Value As Byte)
                m_objSettings.DCOSlots = Value
            End Set
        End Property
        Public Property MinSlots() As Byte
            Get
                Return m_objSettings.MinSlots
            End Get
            Set(ByVal Value As Byte)
                m_objSettings.MinSlots = Value
            End Set
        End Property
        Public Property MinShareSize() As Byte
            Get
                Return m_objSettings.MinShareSize
            End Get
            Set(ByVal Value As Byte)
                m_objSettings.MinShareSize = Value
            End Set
        End Property
        Public Property MaxShareSize() As Byte
            Get
                Return m_objSettings.MaxShareSize
            End Get
            Set(ByVal Value As Byte)
                m_objSettings.MaxShareSize = Value
            End Set
        End Property
        Public Property CPrefix() As Byte
            Get
                Return m_objSettings.CPrefix
            End Get
            Set(ByVal Value As Byte)
                m_objSettings.CPrefix = Value
            End Set
        End Property
        Public Property DCOSpeed() As Byte
            Get
                Return m_objSettings.DCOSpeed
            End Get
            Set(ByVal Value As Byte)
                m_objSettings.DCOSpeed = Value
            End Set
        End Property
        Public Property SendJoinMsg() As Byte
            Get
                Return m_objSettings.SendJoinMsg
            End Get
            Set(ByVal Value As Byte)
                m_objSettings.SendJoinMsg = Value
            End Set
        End Property
        Public Property MaxPassAttempts() As Byte
            Get
                Return m_objSettings.MaxPassAttempts
            End Get
            Set(ByVal Value As Byte)
                m_objSettings.MaxPassAttempts = Value
            End Set
        End Property
        Public Property FWGetNickList() As Byte
            Get
                Return m_objSettings.FWGetNickList
            End Get
            Set(ByVal Value As Byte)
                m_objSettings.FWGetNickList = Value
            End Set
        End Property
        Public Property FWActiveSearch() As Byte
            Get
                Return m_objSettings.FWPassiveSearch
            End Get
            Set(ByVal Value As Byte)
                m_objSettings.FWPassiveSearch = Value
            End Set
        End Property
        Public Property FWPassiveSearch() As Byte
            Get
                Return m_objSettings.FWPassiveSearch
            End Get
            Set(ByVal Value As Byte)
                m_objSettings.FWPassiveSearch = Value
            End Set
        End Property
        Public Property FWMyINFO() As Byte
            Get
                Return m_objSettings.FWMyINFO
            End Get
            Set(ByVal Value As Byte)
                m_objSettings.FWMyINFO = Value
            End Set
        End Property
        Public Property FWMainChat() As Byte
            Get
                Return m_objSettings.FWMainChat
            End Get
            Set(ByVal Value As Byte)
                m_objSettings.FWMainChat = Value
            End Set
        End Property
        Public Property MinMyinfoFakeCls() As Byte
            Get
                Return m_objSettings.MinMyinfoFakeCls
            End Get
            Set(ByVal Value As Byte)
                m_objSettings.MinMyinfoFakeCls = Value
            End Set
        End Property
        Public Property MinPassiveSearchLen() As Integer
            Get
                Return m_objSettings.MinPassiveSearchLen
            End Get
            Set(ByVal Value As Integer)
                m_objSettings.MinPassiveSearchLen = Value
            End Set
        End Property
        Public Property FWInterval() As Integer
            Get
                Return m_objSettings.FWInterval
            End Get
            Set(ByVal Value As Integer)
                m_objSettings.FWInterval = Value
            End Set
        End Property
        Public Property MaxUsers() As Integer
            Get
                Return m_objSettings.MaxUsers
            End Get
            Set(ByVal Value As Integer)
                m_objSettings.MaxUsers = Value
            End Set
        End Property
        Public Property MinSearchCls() As Integer
            Get
                Return m_objSettings.MinSearchCls
            End Get
            Set(ByVal Value As Integer)
                m_objSettings.MinSearchCls = Value
            End Set
        End Property
        Public Property MinConnectCls() As Integer
            Get
                Return m_objSettings.MinConnectCls
            End Get
            Set(ByVal Value As Integer)
                m_objSettings.MinConnectCls = Value
            End Set
        End Property
        Public Property ZLINELENGHT() As Integer
            Get
                Return m_objSettings.ZLINELENGHT
            End Get
            Set(ByVal Value As Integer)
                m_objSettings.ZLINELENGHT = Value
            End Set
        End Property
        Public Property IMinShare() As Double
            Get
                Return m_objSettings.IMinShare
            End Get
            Set(ByVal Value As Double)
                m_objSettings.IMinShare = Value
            End Set
        End Property
        Public Property IMaxShare() As Double
            Get
                Return m_objSettings.IMaxShare
            End Get
            Set(ByVal Value As Double)
                m_objSettings.IMaxShare = Value
            End Set
        End Property
        Public Property MinShare() As Double
            Get
                Return m_objSettings.MinShare
            End Get
            Set(ByVal Value As Double)
                m_objSettings.MinShare = Value
            End Set
        End Property
        Public Property MaxShare() As Double
            Get
                Return m_objSettings.MaxShare
            End Get
            Set(ByVal Value As Double)
                m_objSettings.MaxShare = Value
            End Set
        End Property
        Public Property DCSlotsPerHub() As Double
            Get
                Return m_objSettings.DCSlotsPerHub
            End Get
            Set(ByVal Value As Double)
                m_objSettings.DCSlotsPerHub = Value
            End Set
        End Property
        Public Property DCBandPerSlot() As Double
            Get
                Return m_objSettings.DCBandPerSlot
            End Get
            Set(ByVal Value As Double)
                m_objSettings.DCBandPerSlot = Value
            End Set
        End Property
        Public Property DCMinVersion() As Double
            Get
                Return m_objSettings.DCMinVersion
            End Get
            Set(ByVal Value As Double)
                m_objSettings.DCMinVersion = Value
            End Set
        End Property
        Public Property NMDCMinVersion() As Double
            Get
                Return m_objSettings.NMDCMinVersion
            End Get
            Set(ByVal Value As Double)
                m_objSettings.NMDCMinVersion = Value
            End Set
        End Property
        Public Property MinClsSearchSend() As Boolean
            Get
                Return m_objSettings.MinClsSearchSend
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.MinClsSearchSend = Value
            End Set
        End Property
        Public Property MinClsConnectSend() As Boolean
            Get
                Return m_objSettings.MinClsConnectSend
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.MinClsConnectSend = Value
            End Set
        End Property
        Public Property AutoCheckUpdate() As Boolean
            Get
                Return m_objSettings.AutoCheckUpdate
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.AutoCheckUpdate = Value
            End Set
        End Property
        Public Property AutoKickMLDC() As Boolean
            Get
                Return m_objSettings.AutoKickMLDC
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.AutoKickMLDC = Value
            End Set
        End Property
        Public Property DenySocks5() As Boolean
            Get
                Return m_objSettings.DenySocks5
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.DenySocks5 = Value
            End Set
        End Property
        Public Property DenyPassive() As Boolean
            Get
                Return m_objSettings.DenyPassive
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.DenyPassive = Value
            End Set
        End Property
        Public Property AutoRegister() As Boolean
            Get
                Return m_objSettings.AutoRegister
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.AutoRegister = Value
            End Set
        End Property
        Public Property AutoRedirect() As Boolean
            Get
                Return m_objSettings.AutoRedirect
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.AutoRedirect = Value
            End Set
        End Property
        Public Property AutoRedirectFull() As Boolean
            Get
                Return m_objSettings.AutoRedirectFull
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.AutoRedirectFull = Value
            End Set
        End Property
        Public Property AutoRedirectNonReg() As Boolean
            Get
                Return m_objSettings.AutoRedirectNonReg
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.AutoRedirectNonReg = Value
            End Set
        End Property
        Public Property AutoRedirectFullNonReg() As Boolean
            Get
                Return m_objSettings.AutoRedirectFullNonReg
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.AutoRedirectFullNonReg = Value
            End Set
        End Property
        Public Property AutoRedirectFullNonOps() As Boolean
            Get
                Return m_objSettings.AutoRedirectFullNonOps
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.AutoRedirectFullNonOps = Value
            End Set
        End Property
        Public Property AutoStart() As Boolean
            Get
                Return m_objSettings.AutoStart
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.AutoStart = Value
            End Set
        End Property
        Public Property CompactDBOnExit() As Boolean
            Get
                Return m_objSettings.CompactDBOnExit
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.CompactDBOnExit = Value
            End Set
        End Property
        Public Property ConfirmExit() As Boolean
            Get
                Return m_objSettings.ConfirmExit
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.ConfirmExit = Value
            End Set
        End Property
        Public Property DCValidateTags() As Boolean
            Get
                Return m_objSettings.DCValidateTags
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.DCValidateTags = Value
            End Set
        End Property
        Public Property DCIncludeOPed() As Boolean
            Get
                Return m_objSettings.DCIncludeOPed
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.DCIncludeOPed = Value
            End Set
        End Property
        Public Property OPBypass() As Boolean
            Get
                Return m_objSettings.OPBypass
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.OPBypass = Value
            End Set
        End Property
        Public Property PreloadWinsocks() As Boolean
            Get
                Return m_objSettings.PreloadWinsocks
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.PreloadWinsocks = Value
            End Set
        End Property
        Public Property SendMessageAFK() As Boolean
            Get
                Return m_objSettings.SendMessageAFK
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.SendMessageAFK = Value
            End Set
        End Property
        Public Property RegOnly() As Boolean
            Get
                Return m_objSettings.RegOnly
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.RegOnly = Value
            End Set
        End Property
        Public Property MentoringSystem() As Boolean
            Get
                Return m_objSettings.MentoringSystem
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.MentoringSystem = Value
            End Set
        End Property
        Public Property PreventSearchBots() As Boolean
            Get
                Return m_objSettings.PreventSearchBots
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.PreventSearchBots = Value
            End Set
        End Property
        Public Property DescriptiveBanMsg() As Boolean
            Get
                Return m_objSettings.DescriptiveBanMsg
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.DescriptiveBanMsg = Value
            End Set
        End Property
        Public Property UseBotName() As Boolean
            Get
                Return m_objSettings.UseBotName
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.UseBotName = Value
            End Set
        End Property
        Public Property Passive() As Boolean
            Get
                Return m_objSettings.Passive
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.Passive = Value
            End Set
        End Property
        Public Property RedirectFMS() As Boolean
            Get
                Return m_objSettings.RedirectFMS
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.RedirectFMS = Value
            End Set
        End Property
        Public Property RedirectFGP() As Boolean
            Get
                Return m_objSettings.RedirectFGP
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.RedirectFGP = Value
            End Set
        End Property
        Public Property FilterCPrefix() As Boolean
            Get
                Return m_objSettings.FilterCPrefix
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.FilterCPrefix = Value
            End Set
        End Property
        Public Property EnabledCommands() As Boolean
            Get
                Return m_objSettings.EnabledCommands
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.EnabledCommands = Value
            End Set
        End Property
        Public Property ScriptSafeMode() As Boolean
            Get
                Return m_objSettings.ScriptSafeMode
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.ScriptSafeMode = Value
            End Set
        End Property
        Public Property StartMinimized() As Boolean
            Get
                Return m_objSettings.StartMinimized
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.StartMinimized = Value
            End Set
        End Property
        Public Property SendMsgAsPrivate() As Boolean
            Get
                Return m_objSettings.SendMsgAsPrivate
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.SendMsgAsPrivate = Value
            End Set
        End Property
        Public Property PasswordMode() As Boolean
            Get
                Return m_objSettings.PasswordMode
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.PasswordMode = Value
            End Set
        End Property
        Public Property WordWrap() As Boolean
            Get
                Return m_objSettings.WordWrap
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.WordWrap = Value
            End Set
        End Property
        Public Property DenyNoTag() As Boolean
            Get
                Return m_objSettings.DenyNoTag
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.DenyNoTag = Value
            End Set
        End Property
        Public Property HideFadeImg() As Boolean
            Get
                Return m_objSettings.HideFadeImg
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.HideFadeImg = Value
            End Set
        End Property
        Public Property CheckFakeShare() As Boolean
            Get
                Return m_objSettings.CheckFakeShare
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.CheckFakeShare = Value
            End Set
        End Property
        Public Property EnableFloodWall() As Boolean
            Get
                Return m_objSettings.EnableFloodWall
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.EnableFloodWall = Value
            End Set
        End Property
        Public Property PreventGuessPass() As Boolean
            Get
                Return m_objSettings.PreventGuessPass
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.PreventGuessPass = Value
            End Set
        End Property
        Public Property OpsCanRedirect() As Boolean
            Get
                Return m_objSettings.OpsCanRedirect
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.OpsCanRedirect = Value
            End Set
        End Property
        Public Property ChatOnly() As Boolean
            Get
                Return m_objSettings.ChatOnly
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.ChatOnly = Value
            End Set
        End Property
        Public Property MinimizeTray() As Boolean
            Get
                Return m_objSettings.MinimizeTray
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.MinimizeTray = Value
            End Set
        End Property
        Public Property RedirectFTooOldDCpp() As Boolean
            Get
                Return m_objSettings.RedirectFTooOldDCpp
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.RedirectFTooOldDCpp = Value
            End Set
        End Property
        Public Property RedirectFTooOldNMDC() As Boolean
            Get
                Return m_objSettings.RedirectFTooOldNMDC
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.RedirectFTooOldNMDC = Value
            End Set
        End Property
        Public Property RedirectFNoTag() As Boolean
            Get
                Return m_objSettings.RedirectFNoTag
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.RedirectFNoTag = Value
            End Set
        End Property
        Public Property RedirectFMinShare() As Boolean
            Get
                Return m_objSettings.RedirectFMinShare
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.RedirectFMinShare = Value
            End Set
        End Property
        Public Property RedirectFMaxShare() As Boolean
            Get
                Return m_objSettings.RedirectFMaxShare
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.RedirectFMaxShare = Value
            End Set
        End Property
        Public Property RedirectFMaxSlots() As Boolean
            Get
                Return m_objSettings.RedirectFMaxSlots
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.RedirectFMaxSlots = Value
            End Set
        End Property
        Public Property RedirectFMinSlots() As Boolean
            Get
                Return m_objSettings.RedirectFMinSlots
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.RedirectFMinSlots = Value
            End Set
        End Property
        Public Property RedirectFMaxHubs() As Boolean
            Get
                Return m_objSettings.RedirectFMaxHubs
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.RedirectFMaxHubs = Value
            End Set
        End Property
        Public Property RedirectFSlotPerHub() As Boolean
            Get
                Return m_objSettings.RedirectFSlotPerHub
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.RedirectFSlotPerHub = Value
            End Set
        End Property
        Public Property RedirectFBWPerSlot() As Boolean
            Get
                Return m_objSettings.RedirectFBWPerSlot
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.RedirectFBWPerSlot = Value
            End Set
        End Property
        Public Property RedirectFFakeShare() As Boolean
            Get
                Return m_objSettings.RedirectFFakeShare
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.RedirectFFakeShare = Value
            End Set
        End Property
        Public Property RedirectFFakeTag() As Boolean
            Get
                Return m_objSettings.RedirectFFakeTag
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.RedirectFFakeTag = Value
            End Set
        End Property
        Public Property RedirectFPasMode() As Boolean
            Get
                Return m_objSettings.RedirectFPasMode
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.RedirectFPasMode = Value
            End Set
        End Property
        Public Property HideMyinfos() As Boolean
            Get
                Return m_objSettings.HideMyinfos
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.HideMyinfos = Value
            End Set
        End Property
        Public Property ACOClients() As Boolean
            Get
                Return m_objSettings.ACOClients
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.ACOClients = Value
            End Set
        End Property
        Public Property DynUpdate() As Boolean
            Get
                Return m_objSettings.DynUpdate
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.DynUpdate = Value
            End Set
        End Property
        Public Property DynDNSUpdateEna() As Boolean
            Get
                Return m_objSettings.DynDNSUpdateEna
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.DynDNSUpdateEna = Value
            End Set
        End Property
        Public Property NoIPUpdateEna() As Boolean
            Get
                Return m_objSettings.NoIPUpdateEna
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.NoIPUpdateEna = Value
            End Set
        End Property
        Public Property EnabledScheduler() As Boolean
            Get
                Return m_objSettings.EnabledScheduler
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.EnabledScheduler = Value
            End Set
        End Property
        Public Property NoIPUpdateStartUp() As Boolean
            Get
                Return m_objSettings.NoIPUpdateStartUp
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.NoIPUpdateStartUp = Value
            End Set
        End Property
        Public Property PopUpNewReg() As Boolean
            Get
                Return m_objSettings.PopUpNewReg
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.PopUpNewReg = Value
            End Set
        End Property
        Public Property PopUpOpConected() As Boolean
            Get
                Return m_objSettings.PopUpOpConected
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.PopUpOpConected = Value
            End Set
        End Property
        Public Property PopUpOpDisconected() As Boolean
            Get
                Return m_objSettings.PopUpOpDisconected
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.PopUpOpDisconected = Value
            End Set
        End Property
        Public Property PopUpUserKick() As Boolean
            Get
                Return m_objSettings.PopUpUserKick
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.PopUpUserKick = Value
            End Set
        End Property
        Public Property PopUpUserBaned() As Boolean
            Get
                Return m_objSettings.PopUpUserBaned
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.PopUpUserBaned = Value
            End Set
        End Property
        Public Property PopUpRangeBan() As Boolean
            Get
                Return m_objSettings.PopUpRangeBan
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.PopUpRangeBan = Value
            End Set
        End Property
        Public Property PopUpUserRedirected() As Boolean
            Get
                Return m_objSettings.PopUpUserRedirected
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.PopUpUserRedirected = Value
            End Set
        End Property
        Public Property PopUpStartedServing() As Boolean
            Get
                Return m_objSettings.PopUpStartedServing
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.PopUpStartedServing = Value
            End Set
        End Property
        Public Property PopUpStopedServing() As Boolean
            Get
                Return m_objSettings.PopUpStopedServing
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.PopUpStopedServing = Value
            End Set
        End Property
        Public Property PopUpCoreError() As Boolean
            Get
                Return m_objSettings.PopUpCoreError
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.PopUpCoreError = Value
            End Set
        End Property
        Public Property StartWin() As Boolean
            Get
                Return m_objSettings.StartWin
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.StartWin = Value
            End Set
        End Property
        Public Property MoveForm() As Boolean
            Get
                Return m_objSettings.MoveForm
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.MoveForm = Value
            End Set
        End Property
        Public Property PriorityBl() As Boolean
            Get
                Return m_objSettings.PriorityBl
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.PriorityBl = Value
            End Set
        End Property
        Public Property blSkin() As Boolean
            Get
                Return m_objSettings.blSkin
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.blSkin = Value
            End Set
        End Property
        Public Property RndSkin() As Boolean
            Get
                Return m_objSettings.RndSkin
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.RndSkin = Value
            End Set
        End Property
        Public Property Plugins() As Boolean
            Get
                Return m_objSettings.Plugins
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.Plugins = Value
            End Set
        End Property
        Public Property MagneticWin() As Boolean
            Get
                Return m_objSettings.MagneticWin
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.MagneticWin = Value
            End Set
        End Property
        Public Property PriorityVal() As Boolean
            Get
                Return m_objSettings.PriorityVal
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.PriorityVal = Value
            End Set
        End Property
        Public Property frmHubPosition() As Boolean
            Get
                Return m_objSettings.frmHubPosition
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.frmHubPosition = Value
            End Set
        End Property
        Public Property lngSkin() As Boolean
            Get
                Return m_objSettings.lngSkin
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.lngSkin = Value
            End Set
        End Property
        Public Property EnabledToolTips() As Boolean
            Get
                Return m_objSettings.EnabledToolTips
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.EnabledToolTips = Value
            End Set
        End Property
        Public Property EnabledStatistics() As Boolean
            Get
                Return m_objSettings.EnabledStatistics
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.EnabledStatistics = Value
            End Set
        End Property
        Public Property LogMC() As Boolean
            Get
                Return m_objSettings.LogMC
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.LogMC = Value
            End Set
        End Property
        Public Property LogPM() As Boolean
            Get
                Return m_objSettings.LogPM
            End Get
            Set(ByVal Value As Boolean)
                m_objSettings.LogPM = Value
            End Set
        End Property
        Public Property DBType() As Integer
            Get
                Return m_objSettings.DBType
            End Get
            Set(ByVal Value As Integer)
                m_objSettings.DBType = Value
            End Set
        End Property
        Public Property GUIType() As Integer
            Get
                Return m_objSettings.GUIType
            End Get
            Set(ByVal Value As Integer)
                m_objSettings.GUIType = Value
            End Set
        End Property
        Public Property DBUserName() As String
            Get
                Return m_objSettings.DBUserName
            End Get
            Set(ByVal Value As String)
                m_objSettings.DBUserName = Value
            End Set
        End Property
        Public Property DBPassword() As String
            Get
                Return m_objSettings.DBPassword
            End Get
            Set(ByVal Value As String)
                m_objSettings.DBPassword = Value
            End Set
        End Property
        Public Property DBServerAddresse() As String
            Get
                Return m_objSettings.DBServerAddresse
            End Get
            Set(ByVal Value As String)
                m_objSettings.DBServerAddresse = Value
            End Set
        End Property
        Public Property DBServerPort() As Integer
            Get
                Return m_objSettings.DBServerPort
            End Get
            Set(ByVal Value As Integer)
                m_objSettings.DBServerPort = Value
            End Set
        End Property
        Public Property DBName() As String
            Get
                Return m_objSettings.DBName
            End Get
            Set(ByVal Value As String)
                m_objSettings.DBName = Value
            End Set
        End Property
    End Class

    <ComVisible(False)> _
    Public Class clsFunctions
        Private m_objFunctions As Object
        Public Sub New()
            m_objFunctions = Core.GetGlbObject("g_objFunctions")
        End Sub
        Public Sub [MsgBox](ByVal sTest As String, Optional ByVal sCaption As String = "", Optional ByVal iIcon As Integer = 0)
            Dim intIcon As MessageBoxIcon
            Select Case iIcon
                Case 0 : intIcon = MessageBoxIcon.None
                Case 1 : intIcon = MessageBoxIcon.Information
                Case 2 : intIcon = MessageBoxIcon.Exclamation
                Case 3 : intIcon = MessageBoxIcon.Hand
                Case 4 : intIcon = MessageBoxIcon.Question
                Case 5 : intIcon = MessageBoxIcon.Warning
                Case 6 : intIcon = MessageBoxIcon.Asterisk
                Case 7 : intIcon = MessageBoxIcon.Stop
                Case 8 : intIcon = MessageBoxIcon.Error
            End Select
            If sCaption = "" Then sCaption = g_LuaLink.Name
            MessageBox.Show(sTest, sCaption, MessageBoxButtons.OK, intIcon)
        End Sub
        Public Sub LoadObj(ByVal [Object] As Object)
            m_objFunctions.LoadObj([Object])
        End Sub
        Public Sub UnloadObj(ByVal [Object] As Object)
            m_objFunctions.UnloadObj([Object])
        End Sub
        Public Function NewCollection() As Object
            Return m_objFunctions.NewCollection
        End Function
        Public Function NewHuffman() As Object
            Return m_objFunctions.NewHuffman
        End Function
        Public Function NewBZip2() As Object
            Return m_objFunctions.NewBZip2
        End Function
        Public Function NewZLib() As Object
            Return m_objFunctions.NewZLib
        End Function
        Public Function NewXMLParser() As Object
            Return m_objFunctions.NewXMLParser
        End Function
        Public Function NewXMLNode() As Object
            Return m_objFunctions.NewXMLNode
        End Function
        Public Function NewXMLAttribute() As Object
            Return m_objFunctions.NewXMLAttribute
        End Function
        Public Function NewJetEngine() As Object
            Return m_objFunctions.NewJetEngine
        End Function
        Public Function NewConnection() As Object
            Return m_objFunctions.NewConnection
        End Function
        Public Function NewSQLite() As Object
            Return m_objFunctions.NewSQLite
        End Function
        Public Function NewDictionary() As Object
            Return m_objFunctions.NewDictionary
        End Function
        Public Function AfterFirst(ByVal strString As String, ByVal strFind As String) As String
            Return m_objFunctions.AfterFirst(strString, strFind)
        End Function
        Public Function BeforeFirst(ByVal strString As String, ByVal strFind As String) As String
            Return m_objFunctions.BeforeFirst(strString, strFind)
        End Function
        Public Function AfterLast(ByVal strString As String, ByVal strFind As String) As String
            Return m_objFunctions.AfterLast(strString, strFind)
        End Function
        Public Function BeforeLast(ByVal strString As String, ByVal strFind As String) As String
            Return m_objFunctions.BeforeLast(strString, strFind)
        End Function
        Public Function BetweenFirst(ByVal strString As String, ByVal strFirst As String, ByVal strSecond As String) As String
            Return m_objFunctions.BetweenFirst(strString, strFirst, strSecond)
        End Function
        Public Function BetweenLast(ByVal strString As String, ByVal strFirst As String, ByVal strSecond As String) As String
            Return m_objFunctions.BetweenLast(strString, strFirst, strSecond)
        End Function
        Public Function LastPosition(ByVal strString As String, ByVal strFind As String) As Long
            Return m_objFunctions.LastPosition(strString, strFind)
        End Function
        Public Function ShellExec(ByVal strFile As String, Optional ByVal strParameters As String = "", Optional ByVal strDirectory As String = "", Optional ByVal lngShowCmd As Integer = 1) As Long
            Return m_objFunctions.BetweenLast(strFile, strParameters, strDirectory)
        End Function
        Public Function ShareSize(ByVal dblBytes As Double) As String
            Return m_objFunctions.ShareSize(dblBytes)
        End Function
        Public Function DBDate(ByVal datDate As Date) As String
            Return m_objFunctions.DBDate(datDate)
        End Function
        Public Function ClassName(ByVal intClass As Integer, Optional ByVal blnWithNumber As Boolean = False) As String
            Return m_objFunctions.ClassName(intClass, blnWithNumber)
        End Function
        Public Function ClassNameList(Optional ByVal blnWithNumber As Boolean = False) As String()
            Return m_objFunctions.ClassNameList(blnWithNumber)
        End Function
        Public Function TickCount() As Long
            Return m_objFunctions.TickCount
        End Function
        Public Function Alert(ByVal strMessage As String, Optional ByVal intButtons As Integer = 0, Optional ByVal strTitle As String = "JScript") As Object
            Return m_objFunctions.Alert(strMessage, intButtons, strTitle)
        End Function
        Public Function Prompt(ByVal strMessage As String, Optional ByVal strTitle As String = "JScript", Optional ByVal strDefault As String = "") As String
            Return m_objFunctions.Prompt(strMessage, strTitle, strTitle, strDefault)
        End Function
        Public Sub ShowBallon(ByVal sTitle As String, ByVal sMsg As String, Optional ByVal lIconType As Integer = 4, Optional ByVal bSound As Boolean = True)
            m_objFunctions.ShowBallon(sTitle, sMsg, lIconType, bSound)
        End Sub
        Public Function RandomChars(ByVal lngLen As Long, ByVal chrStart As String, ByVal chrEnd As String) As String
            Return m_objFunctions.RandomChars(lngLen, chrStart, chrEnd)
        End Function
        Public Function CUser(ByVal Expression As Object) As Object
            Return m_objFunctions.CUser(Expression)
        End Function
        Public Function [CObj](ByVal Expression As Object) As Object
            Return m_objFunctions.[CObj](Expression)
        End Function
        Public Function GetENLangStr(ByVal strString As String) As String
            Return m_objFunctions.GetENLangStr(strString)
        End Function
        Public Function ValidLang(ByVal strLangID As String) As Boolean
            Return m_objFunctions.ValidLang(strLangID)
        End Function
        Public Function ListLangs() As String
            Return m_objFunctions.ListLangs()
        End Function
        Public Sub AddScriptMessages(ByVal strPath As String)
            m_objFunctions.AddScriptMessages(strPath)
        End Sub
        Public Sub AddScriptMessage(ByVal sLngID As String, ByVal sName As String, ByVal sValue As String)
            m_objFunctions.AddScriptMessage(sLngID, sName, sValue)
        End Sub
        Public Function GetSegment(ByVal SegmentID As Object, ByVal sData As Object, ByVal sSegmentChar As Object) As Object
            Return m_objFunctions.GetSegment(SegmentID, sData, sSegmentChar)
        End Function
        Public Function SplitParameter(ByVal sParameters As Object, ByVal sDivChars As Object) As Object
            Return m_objFunctions.SplitParameter(sParameters, sDivChars)
        End Function

        Public Function DictItemDel(ByVal sKey As Object, ByVal dict As Object) As Object
            Return m_objFunctions.DictItemDel(sKey, dict)
        End Function
        Public Function ForceMinLen(ByVal sData As Object, ByVal nLen As Object, ByVal sFillChar As Object) As Object
            Return m_objFunctions.ForceMinLen(sData, nLen, sFillChar)
        End Function
        Public Function ReplaceHubVars(ByVal curUser As Object, ByVal strMessage As String) As String
            Return m_objFunctions.ReplaceHubVars(curUser, strMessage)
        End Function
        Public Function ReplaceUserVars(ByVal curUser As Object, ByVal strMessage As String) As String
            Return m_objFunctions.ReplaceUserVars(curUser, strMessage)
        End Function
        Public Function NMDCUnescape(ByVal sData As String) As String
            Return m_objFunctions.NMDCUnescape(sData)
        End Function
        Public Function NMDCEscape(ByVal sData As String) As String
            Return m_objFunctions.NMDCEscape(sData)
        End Function
    End Class

    <ComVisible(False)> _
    Public Class clsChatRoom
        Private m_objChatRoom As Object
        Public Sub New()
            m_objChatRoom = Core.GetGlbObject("g_objChatRoom")
        End Sub
        Public Sub ShowAddDialog(ByVal frmOwner As Form)
            m_objChatRoom.ShowAddDialog(frmOwner)
        End Sub
        Public Sub ShowEditDialog(ByVal sBotName As String, ByVal frmOwner As Object)
            m_objChatRoom.ShowEditDialog(sBotName, frmOwner)
        End Sub
        Public Function AddChat(ByVal sName As String, ByVal bEnabled As Boolean, ByVal iMinClass As Integer, ByVal bOperator As Boolean, Optional ByVal dShare As Double = 0, Optional ByVal sDescription As String = "", Optional ByVal sConnection As String = "", Optional ByVal sEmail As String = "", Optional ByVal sTag As String = "", Optional ByVal lIcon As Long = 15, Optional ByVal bOverwrite As Boolean = True) As Boolean
            Return m_objChatRoom.AddChat(sName, bEnabled, iMinClass, bOperator, dShare, sDescription, sConnection, sConnection, sEmail, sTag, lIcon, bOverwrite)
        End Function
        Public Function RemChat(ByVal sName As String) As Boolean
            Return m_objChatRoom.RemChat(sName)
        End Function
        Public Function SwitchChat(ByVal sName As String, ByVal blnState As Boolean) As Boolean
            Return m_objChatRoom.SwitchChat(sName, blnState)
        End Function
        Public Function Exist(ByVal sName As String) As Boolean
            Return m_objChatRoom.Exist(sName)
        End Function
        Public Function GetMyINFO(ByVal varIndexOrName As Object, ByVal bHello As Boolean) As String
            Return m_objChatRoom.GetMyINFO(varIndexOrName, bHello)
        End Function
        Public Sub SetMyINFO(ByVal varIndexOrName As Object, ByVal sData As String, ByVal bHello As Boolean)
            m_objChatRoom.SetMyINFO(varIndexOrName, sData, bHello)
        End Sub
        Public ReadOnly Property iCount() As Integer
            Get
                Return m_objChatRoom.iCount
            End Get
        End Property
        Public Function IndexByName(ByVal sName As String) As Integer
            Return m_objChatRoom.IndexByName(sName)
        End Function
        Public Sub UpDateBotToClients(Optional ByVal sBotName As String = "")
            m_objChatRoom.UpDateBotToClients(sBotName)
        End Sub
        Public Function ProcessChat(ByVal strKey As String) As Long
            Return m_objChatRoom.IndexByName(ProcessChat)
        End Function
        Public Sub UpDate(ByVal curUser As Object)
            m_objChatRoom.UpDate(curUser)
        End Sub
        Public Sub RegisterBots()
            m_objChatRoom.RegisterBots()
        End Sub
        Public Sub UnRegisterChat()
            m_objChatRoom.UnRegisterChat()
        End Sub
    End Class

    <ComVisible(False)> _
    Public Class oWinsock
        Private m_obWsck As Object
        Public Sub New(ByVal oWsck As Object)
            m_obWsck = oWsck
        End Sub
        Public ReadOnly Property Index() As Integer
            Get
                Return m_obWsck.Index
            End Get
        End Property
        Public ReadOnly Property BytesReceived() As Byte
            Get
                Return m_obWsck.BytesReceived
            End Get
        End Property
        Public ReadOnly Property LocalHostName() As String
            Get
                Return m_obWsck.LocalHostName
            End Get
        End Property
        Public ReadOnly Property LocalIP() As String
            Get
                Return m_obWsck.LocalIP
            End Get
        End Property
        Public ReadOnly Property LocalPort() As Integer
            Get
                Return m_obWsck.LocalPort
            End Get
        End Property
        Public ReadOnly Property RemoteHost() As String
            Get
                Return m_obWsck.RemoteHost
            End Get
        End Property
        Public ReadOnly Property RemoteHostIP() As String
            Get
                Return m_obWsck.RemoteHostIP
            End Get
        End Property
        Public ReadOnly Property RemotePort() As String
            Get
                Return m_obWsck.RemotePort
            End Get
        End Property
        Public ReadOnly Property SocketHandle() As Long
            Get
                Return m_obWsck.SocketHandle
            End Get
        End Property
        Public ReadOnly Property State() As Integer
            Get
                Return m_obWsck.State
            End Get
        End Property
        Public Property Tag() As Object
            Get
                Return m_obWsck.Tag
            End Get
            Set(ByVal value As Object)
                m_obWsck.Tag = value
            End Set
        End Property
        Public Sub Accept(ByVal requestID As Long)
            m_obWsck.Accept(requestID)
        End Sub
        Public Sub Bind(ByVal [LocalPort] As Integer, ByVal [LocalIP] As String)
            m_obWsck.Bind([LocalPort], [LocalIP])
        End Sub
        Public Sub Connect(ByVal [RemoteHost] As String, ByVal [RemotePort] As Integer)
            m_obWsck.Connect([RemoteHost], [RemotePort])
        End Sub
        Public Sub GetData(ByVal data As String, ByVal [type] As Integer, ByVal [maxLen] As Long)
            m_obWsck.GetData(data, [type], [maxLen])
        End Sub
        Public Sub Listen()
            m_obWsck.Listen()
        End Sub
        Public Sub PeekData(ByVal data As String, ByVal [type] As Integer, ByVal [maxLen] As Long)
            m_obWsck.PeekData(data, [type], [maxLen])
        End Sub
        Public Sub SendData(ByVal data As String)
            m_obWsck.SendData(data)
        End Sub
    End Class

    <ComVisible(False)> _
    Public Class frmHub
        Private m_frmHub As Object
        Public Sub New(ByVal oFrm As Object)
            m_frmHub = oFrm
        End Sub
        Public Property Tag() As Object
            Get
                Return m_frmHub.Tag
            End Get
            Set(ByVal value As Object)
                m_frmHub.Tag = value
            End Set
        End Property
        Public Property Caption() As String
            Get
                Return m_frmHub.Caption
            End Get
            Set(ByVal value As String)
                m_frmHub.Caption = value
            End Set
        End Property
        Public Property WindowState() As Integer
            Get
                Return m_frmHub.WindowState
            End Get
            Set(ByVal value As Integer)
                m_frmHub.WindowState = value
            End Set
        End Property
        Public ReadOnly Property sVersion() As String
            Get
                Return m_frmHub.sVersion
            End Get
        End Property
        Public Sub APP_TERMINATE(Optional ByVal blnRestarEXE As Boolean = False, Optional ByVal bAutoStartHub As Boolean = True, Optional ByVal bMinimizeForm As Boolean = True)
            m_frmHub.APP_TERMINATE(blnRestarEXE, bMinimizeForm)
        End Sub
        Public Function DBConnectionOpen() As Boolean
            Return m_frmHub.DBConnectionOpen
        End Function
        Public Sub DBConnectionClose()
            m_frmHub.DBConnectionClose()
        End Sub
        Public Function DBConnectionTest() As Boolean
            m_frmHub.DBConnectionTest()
        End Function
        Public Function DBChangeType(ByVal iType As Integer) As Boolean
            Return m_frmHub.DBChangeType(iType)
        End Function
        Public ReadOnly Property DBType() As String
            Get
                Return m_frmHub.DBType
            End Get
        End Property
        Public Sub DBSetDefaut()
            m_frmHub.DBSetDefaut()
        End Sub
        Public Function SQLRemComments(ByVal strSqlCmd As String) As String
            Return m_frmHub.SQLRemComments(strSqlCmd)
        End Function
        Public Function GetCompilerCondition(ByVal sName As String) As Boolean
            Return m_frmHub.GetCompilerCondition(sName)
        End Function
        Public Function GetVariable(ByVal strExpr As String) As Object
            Return m_frmHub.GetVariable(strExpr)
        End Function
        Public Sub SetVariable(ByVal strVariable As String, ByVal varValue As Object)
            m_frmHub.SetVariable(strVariable, varValue)
        End Sub
        Public Function RunFunction(ByVal ParamArray varExpr() As Object) As Object
            Return m_frmHub.RunFunction(varExpr)
        End Function
        Public Function GetGlbInArrObject(ByVal sObjName As String, ByVal intIndex As Integer) As Object
            Return m_frmHub.GetGlbInArrObject(sObjName, intIndex)
        End Function
        Public Function GetGlbObject(ByVal sObjName As String) As Object
            Return m_frmHub.GetGlbObject(sObjName)
        End Function
        Public Function GetFrmObject(ByVal sFrmName As String) As Object
            Return m_frmHub.GetFrmObject(sFrmName)
        End Function
        Public Function GetClsObject(ByVal sObjName As String) As Object
            Return m_frmHub.GetClsObject(sObjName)
        End Function
        Public Function PlgCheckIndexByName(ByVal strName As String) As Long
            Return m_frmHub.PlgCheckIndexByName(strName)
        End Function
        Public Function PlgSwitch(ByVal varIndexOrName As Object, ByVal blnState As Boolean) As Boolean
            Return m_frmHub.PlgSwitch(varIndexOrName, blnState)
        End Function
        Public Sub PlgRefreshGUI(Optional ByVal blnIsIni As Boolean = False)
            m_frmHub.PlgRefreshGUI(blnIsIni)
        End Sub
        Public ReadOnly Property PlgObjectByIndex(ByVal intIndex As Integer) As String
            Get
                Return m_frmHub.PlgObjectByIndex(intIndex)
            End Get
        End Property
        Public ReadOnly Property PlgObjectByName(ByVal intIndex As Integer) As String
            Get
                Return m_frmHub.PlgObjectByName(intIndex)
            End Get
        End Property
        Public ReadOnly Property PlgCount() As Integer
            Get
                Return m_frmHub.PlgCount
            End Get
        End Property
        Public Sub PlgXmlLoad()
            m_frmHub.PlgXmlLoad()
        End Sub
        Public Sub ResetHubPorts()
            m_frmHub.ResetHubPorts()
        End Sub
        Public Sub SwitchServing()
            m_frmHub.SwitchServing()
        End Sub
        Public Sub LoadDefaultSettings()
            m_frmHub.LoadDefaultSettings()
        End Sub
        Public Sub LoadSettings()
            m_frmHub.LoadSettings()
        End Sub
        Public Sub SaveSettings()
            m_frmHub.SaveSettings()
        End Sub
        Public Sub RefreshGUI(Optional ByVal bRefreshRegBanIPs As Boolean = False)
            m_frmHub.bRefreshRegBanIPs()
        End Sub
        Public Sub RefreshBanIPs(Optional ByVal intType As Integer = 0)
            m_frmHub.RefreshBanIPs(intType)
        End Sub
        Public Sub CheckOutdatedRecords()
            m_frmHub.CheckOutdatedRecords()
        End Sub
        Public Function LockToKey(ByVal strLock As String, Optional ByVal n As Long = 5) As String
            Return m_frmHub.LockToKey(strLock, n)
        End Function
        Public Sub CloseSocket(ByVal intIndex As Integer)
            m_frmHub.CloseSocket(intIndex)
        End Sub
        Public Function DoEventsForMe() As Long
            m_frmHub.DoEventsForMe()
        End Function
        Public Sub RegisterBotName(ByVal strName As String, Optional ByVal blnOperator As Boolean = True, Optional ByVal dblShare As Double = 0, Optional ByVal strDescription As String = "", Optional ByVal strConnection As String = "", Optional ByVal strEmail As String = "", Optional ByVal lngIcon As Long = 1, Optional ByVal blnOverwrite As Boolean = True)
            m_frmHub.RegisterBotName(strName, blnOperator, dblShare, strDescription, strConnection, strEmail, lngIcon, blnOverwrite)
        End Sub
        Public Sub UnregisterBotName(ByVal strName As String)
            m_frmHub.UnregisterBotName(strName)
        End Sub
        Public Function IsRegisteredBotName(ByVal strName As String) As Long
            Return m_frmHub.IsRegisteredBotName(strName)
        End Function
        Public Sub NextRedirect()
            m_frmHub.NextRedirect()
        End Sub
        Public Function MinToDate(ByVal lngMinutes As Long) As String
            Return m_frmHub.MinToDate(lngMinutes)
        End Function
        Public ReadOnly Property oPermaCon() As Object
            Get
                Return m_frmHub.oPermaCon
            End Get
        End Property
        Public ReadOnly Property ServingDate() As Date
            Get
                Return m_frmHub.ServingDate
            End Get
        End Property
        Public ReadOnly Property IsServing() As Boolean
            Get
                Return m_frmHub.IsServing
            End Get
        End Property
        Public ReadOnly Property oTimersAPI() As Object
            Get
                Return m_frmHub.oTimersAPI
            End Get
        End Property
        Public Sub NewTimersAPI()
            m_frmHub.NewTimersAPI()
        End Sub
        Public Sub UpdateDNSs()
            m_frmHub.UpdateDNSs()
        End Sub
        Public Function UpdateIP(ByVal sService As String, ByVal sUserName As String, ByVal sPassword As String, ByVal sHostname As String) As String
            Return m_frmHub.UpdateIP(sService, sUserName, sPassword, sHostname)
        End Function
        Public Function UpdNOIP(ByVal sUserName As String, ByVal sPassword As String, ByVal sHostname As String) As String
            Return m_frmHub.UpdNOIP(sUserName, sPassword, sHostname)
        End Function
        Public Function UpdDynDNS(ByVal sUserName As String, ByVal sPassword As String, ByVal sHostname As String) As String
            Return m_frmHub.UpdDynDNS(sUserName, sPassword, sHostname)
        End Function
        Public Function ResolveHostName(ByVal sHostname As String) As String
            Return m_frmHub.ResolveHostName(sHostname)
        End Function
        Public Function DetectHubIP() As String
            Return m_frmHub.DetectHubIP
        End Function
        Public ReadOnly Property IsActiveWin() As Boolean
            Get
                Return m_frmHub.IsActiveWin
            End Get
        End Property
    End Class

    <ComVisible(False)> _
    Public Class cDebug
        Private m_objDebug As Object
        Public Sub New()
            m_objDebug = Core.GetGlbObject("g_objDebugSC")
        End Sub
        Public Sub WriteLine(ByVal sText As String)
            m_objDebug.WriteLine(sText)
        End Sub
        Public Sub Clear()
            m_objDebug.Clear()
        End Sub
        Public Property [DateTime](ByVal bDateTime As Boolean) As Date
            Get
                Return m_objDebug.DateTime
            End Get
            Set(ByVal value As Date)
                value = m_objDebug
            End Set
        End Property
        Public Sub Show()
            m_objDebug.Show()
        End Sub
    End Class

    <ComVisible(False)> _
    Public Class clsSQLite
        Private m_objSQLite As Object
        Public Sub New()
            m_objSQLite = Core.GetClsObject("clsSQLite")
        End Sub
        Public ReadOnly Property Version() As String
            Get
                Return m_objSQLite.Version
            End Get
        End Property
        Public Property DBPath() As String
            Get
                Return m_objSQLite.DBPath
            End Get
            Set(ByVal Value As String)
                m_objSQLite.DBPath = Value
            End Set
        End Property
        Public ReadOnly Property IsConnected() As Boolean
            Get
                Return m_objSQLite.IsConnected
            End Get
        End Property
        Public ReadOnly Property Handle() As Integer
            Get
                Return m_objSQLite.Handle
            End Get
        End Property
        Public ReadOnly Property LastCallNumRows() As Integer
            Get
                Return m_objSQLite.LastCallNumRows
            End Get
        End Property
        Public ReadOnly Property LastInsertRowID() As Integer
            Get
                Return m_objSQLite.LastInsertRowID
            End Get
        End Property
        Public ReadOnly Property LastError() As Object
            Get
                Return m_objSQLite.LastError
            End Get
        End Property
        Public Function OpenDB() As Boolean
            Return m_objSQLite.OpenDB
        End Function
        Public Function CloseDB() As Boolean
            Return m_objSQLite.CloseDB
        End Function
        Public Function NewData() As clsSQLiteData
            Return New clsSQLiteData
        End Function
        Public Function ExecuteToData(ByVal sQueryString As String) As clsSQLiteData
            Dim oData As Object = m_objSQLite.ExecuteToData(sQueryString)
            Return New clsSQLiteData(oData)
        End Function
        Public Function Execute(ByVal sQueryString As String, Optional ByVal lReturnedRows As Integer = -1) As Object()
            Return m_objSQLite.Execute(sQueryString, lReturnedRows)
        End Function
        Public Function RunAction(ByVal sQueryString As String) As Boolean
            Return m_objSQLite.RunAction(sQueryString)
        End Function
        Public Function TableExists(ByVal strTable As String) As Boolean
            Return m_objSQLite.TableExists(strTable)
        End Function
        Public Function TableIsEmpty(ByVal strTable As String) As Boolean
            Return m_objSQLite.TableIsEmpty(strTable)
        End Function
        Public Function AlterDB(ByVal strCommand As String, Optional ByVal bShowPopUp As Boolean = False) As Object
            Return m_objSQLite.AlterDB(strCommand, bShowPopUp)
        End Function
    End Class

    <ComVisible(False)> _
    Public Class clsSQLiteData
        Private m_objSQLiteData As Object
        Public Sub New(Optional ByVal oSQLiteData As Object = Nothing)
            If oSQLiteData Is Nothing Then
                m_objSQLiteData = Core.GetClsObject("clsSQLiteData")
            Else
                m_objSQLiteData = oSQLiteData
            End If
        End Sub
        Public Sub SetData(ByVal varData As Object)
            m_objSQLiteData.SetData(varData)
        End Sub
        Public Sub SetIndex(ByVal lngIndex As Integer)
            m_objSQLiteData.SetIndex(lngIndex)
        End Sub
        Public Sub MoveNext()
            m_objSQLiteData.MoveNext()
        End Sub
        Public Sub MovePrevious()
            m_objSQLiteData.MovePrevious()
        End Sub
        Public ReadOnly Property RowsCount() As Integer
            Get
                Return m_objSQLiteData.RowsCount()
            End Get
        End Property
        Public ReadOnly Property CollunsCount() As Integer
            Get
                Return m_objSQLiteData.CollunsCount()
            End Get
        End Property
        Public ReadOnly Property Collun(ByVal lngIndex As Integer) As String
            Get
                Return m_objSQLiteData.Collun(lngIndex)
            End Get
        End Property
        Public ReadOnly Property Collect(ByVal lngIndex As Integer) As String
            Get
                Return m_objSQLiteData.Collect(lngIndex)
            End Get
        End Property
        Public ReadOnly Property ByIndex(ByVal lngItem As Integer, ByVal lngCollun As Integer) As String
            Get
                Return m_objSQLiteData.ByIndex(lngItem, lngCollun)
            End Get
        End Property
    End Class

    <ComVisible(False)> _
    Public Class clsRegExps
        Private m_objRegExps As Object
        Public Sub New(Optional ByVal oRegExps As Object = Nothing)
            If oRegExps Is Nothing Then
                m_objRegExps = Core.GetGlbObject("g_objRegExps")
            Else
                m_objRegExps = oRegExps
            End If
        End Sub
        Public Function TestStr(ByVal strString As String, ByVal strPattern As String) As Boolean
            Return m_objRegExps.TestStr(strString, strPattern)
        End Function
        Public Function CaptureSubStr(ByVal strString As String, ByVal strPattern As String) As String
            Return m_objRegExps.CaptureSubStr(strString, strPattern)
        End Function
        Public Function CaptureDbl(ByVal strString As String, ByVal strPattern As String) As Double
            Return m_objRegExps.CaptureDbl(strString, strPattern)
        End Function
        Public Function REReplace(ByVal strString As String, ByVal strPattern As String, ByVal strReplace As String) As String
            Return m_objRegExps.REReplace(strString, strPattern, strReplace)
        End Function
        Public Function REMatchesCol(ByVal strString As String, ByVal strPattern As String) As Object
            Return m_objRegExps.REMatchesCol(strString, strPattern)
        End Function
        Public Function AdvertTest(ByVal strString As String, ByVal strDeny As String, ByVal strAllow As String) As Boolean
            Return m_objRegExps.AdvertTest(strString, strDeny, strAllow)
        End Function
    End Class

    <ComVisible(False)> _
    Public Class clsMyIPTools
        Private m_objMyIPTools As Object
        Public Sub New(Optional ByVal oMyIPTools As Object = Nothing)
            If oMyIPTools Is Nothing Then
                m_objMyIPTools = Core.GetGlbObject("g_objMyIPTools")
            Else
                m_objMyIPTools = oMyIPTools
            End If
        End Sub
        Public ReadOnly Property NetConnected() As Boolean
            Get
                Return m_objMyIPTools.NetConnected
            End Get
        End Property
        Public Function DetectIP() As String
            Return m_objMyIPTools.DetectIP
        End Function
        Public Function UpdateDynDns(ByVal sUser As String, ByVal sPass As String, ByVal sHost As String, ByVal AutoIp As Boolean, ByVal sIP As String, ByVal bWildCard As Boolean) As String
            Return m_objMyIPTools.UpdateDynDns(sUser, sPass, sHost, AutoIp, sIP, bWildCard)
        End Function
        Public Function UpdateNoIP(ByVal sUser As String, ByVal sPass As String, ByVal sHost As String, Optional ByVal sIP As String = "") As String
            Return m_objMyIPTools.UpdateNoIP(sUser, sPass, sHost, sIP)
        End Function
        Public Function ResolveHost(ByVal strHostname As String) As String
            Return m_objMyIPTools.ResolveHost(strHostname)
        End Function
        Public Function IPinRange(ByVal varIP As Object, ByVal varStartIP As Object, ByVal varEndIP As Object) As Boolean
            Return m_objMyIPTools.IPinRange(varIP, varStartIP, varEndIP)
        End Function
        Public Function IP2Long(ByVal IP As String) As Long
            Return m_objMyIPTools.IP2Long(IP)
        End Function
        Public Function Long2IP(ByVal IP As Long) As String
            Return m_objMyIPTools.Long2IP(IP)
        End Function
        Public Function GetHostNameByIP(ByVal sAddress As String) As String
            Return m_objMyIPTools.GetHostNameByIP(sAddress)
        End Function
        Public Function GetIPByHostName(ByVal sHostname As String) As String
            Return m_objMyIPTools.GetIPByHostName(sHostname)
        End Function
        Public Function CheckPing(ByVal sIP As String) As String
            Return m_objMyIPTools.CheckPing(sIP)
        End Function
        Public Function GetHTML(ByVal sURL As String) As String
            Return m_objMyIPTools.GetHTML(sURL)
        End Function
        Public Function ValidRange(ByVal strStartIP As String, ByVal strEndIP As String) As Boolean
            Return m_objMyIPTools.ValidRange(strStartIP, strEndIP)
        End Function
        Public Function ValidIP(ByVal sIPAddress As String) As Boolean
            Return m_objMyIPTools.ValidIP(sIPAddress)
        End Function
    End Class

    <ComVisible(False)> _
    Public Class clsZLib
        Private m_objZLib As Object
        Public Sub New(Optional ByVal oZLib As Object = Nothing)
            If oZLib Is Nothing Then
                m_objZLib = Core.GetClsObject("clsZLib")
            Else
                m_objZLib = oZLib
            End If
        End Sub
        Public Function CompressString(ByVal sData As Object, Optional ByVal bWithDescSizeID As Boolean = False) As String
            Return m_objZLib.CompressString(sData, bWithDescSizeID)
        End Function
        Public Function DecompressString(ByVal sData As String) As String
            Return m_objZLib.DecompressString(sData)
        End Function
        Public Sub CompressFile(ByRef strInput As String, ByRef strOutput As String)
            m_objZLib.CompressFile(strInput, strOutput)
        End Sub
        Public Sub DecompressFile(ByRef strInput As String, ByRef strOutput As String)
            m_objZLib.DecompressFile(strInput, strOutput)
        End Sub
    End Class

    <ComVisible(False)> _
    Public Class clsBZip2
        Private m_objBZip2 As Object
        Public Sub New(Optional ByVal oBZip2 As Object = Nothing)
            If oBZip2 Is Nothing Then
                m_objBZip2 = Core.GetClsObject("clsBZip2")
            Else
                m_objBZip2 = oBZip2
            End If
        End Sub
        Public Function CompressString(ByVal sData As Object, Optional ByVal bWithDescSizeID As Boolean = False) As String
            Return m_objBZip2.CompressString(sData, bWithDescSizeID)
        End Function
        Public Function DecompressString(ByVal sData As String) As String
            Return m_objBZip2.DecompressString(sData)
        End Function
        Public Sub CompressFile(ByRef strInput As String, ByRef strOutput As String)
            m_objBZip2.CompressFile(strInput, strOutput)
        End Sub
        Public Sub DecompressFile(ByRef strInput As String, ByRef strOutput As String)
            m_objBZip2.DecompressFile(strInput, strOutput)
        End Sub
    End Class

    <ComVisible(False)> _
    Public Class clsHuffman
        Private m_objHuffman As Object
        Public Sub New(Optional ByVal oHuffman As Object = Nothing)
            If oHuffman Is Nothing Then
                m_objHuffman = Core.GetClsObject("clsHuffman")
            Else
                m_objHuffman = oHuffman
            End If
        End Sub
        Public Sub EncodeFile(ByVal SourceFile As String, ByVal DestFile As String)
            m_objHuffman.EncodeFile(SourceFile, DestFile)
        End Sub
        Public Sub DecodeFile(ByVal SourceFile As String, ByVal DestFile As String)
            m_objHuffman.DecodeFile(SourceFile, DestFile)
        End Sub
        Public Function DecodeString(ByVal Text As String) As String
            Return m_objHuffman.DecodeString(Text)
        End Function
        Public Function EncodeString(ByVal Text As String) As String
            Return m_objHuffman.EncodeString(Text)
        End Function
    End Class

    <ComVisible(False)> _
    Public Class clsPlan
        Private m_objPlan As Object
        Public Sub New(Optional ByVal oPlan As Object = Nothing)
            If oPlan Is Nothing Then
                m_objPlan = Core.GetGlbObject("g_objScheduler")
            Else
                m_objPlan = oPlan
            End If
        End Sub
        Public Sub ShowAddDialog(ByVal frmOwner As Object)
            m_objPlan.ShowAddDialog(frmOwner)
        End Sub
        Public Sub ShowEditDialog(ByVal sUser As String, _
                                  ByVal sCommand As String, _
                                  ByVal sParameter As String, _
                                  ByVal frmOwner As Object)
            m_objPlan.ShowAddDialog(sUser, sCommand, sParameter, frmOwner)
        End Sub
        Public Function AddPlan(ByVal sUser As String, _
                                ByVal dDateTime As Date, _
                                ByVal bEnabled As Boolean, _
                                ByVal sCommand As String, _
                       Optional ByVal sParameter As String = "", _
                       Optional ByVal iIncrease As Integer = 0, _
                       Optional ByVal eIncreaseType As Integer = 1, _
                       Optional ByVal sDescription As String = "", _
                       Optional ByVal bOverwrite As Boolean = True) As Boolean
            Return m_objPlan.ShowAddDialog(sUser, dDateTime, bEnabled, sCommand, sParameter, iIncrease, eIncreaseType, bOverwrite)
        End Function
        Public Function RemPlan(ByVal sUser As String, _
                                ByVal sCommand As String, _
                                ByVal sParameter As String) As Boolean
            Return m_objPlan.RemPlan(sUser, sCommand, sParameter)
        End Function
    End Class

    <ComVisible(False)> _
    Public Class clsStatus
        Private m_objStatus As Object
        Public Sub New(Optional ByVal oStatus As Object = Nothing)
            If oStatus Is Nothing Then
                m_objStatus = Core.GetGlbObject("g_objStatus")
            Else
                m_objStatus = oStatus
            End If
        End Sub
        'Protocol '*************************
        Public ReadOnly Property NickList() As Long
            Get
                Return m_objStatus.NickList
            End Get
        End Property
        Public ReadOnly Property ConnectMe() As Long
            Get
                Return m_objStatus.ConnectMe
            End Get
        End Property
        Public ReadOnly Property RevConnectToMe() As Long
            Get
                Return m_objStatus.RevConnectToMe
            End Get
        End Property
        Public ReadOnly Property Kicks() As Long
            Get
                Return m_objStatus.Kicks
            End Get
        End Property
        Public ReadOnly Property Redirects() As Long
            Get
                Return m_objStatus.Redirects
            End Get
        End Property
        Public ReadOnly Property BotINFO() As Long
            Get
                Return m_objStatus.BotINFO
            End Get
        End Property
        Public ReadOnly Property NetInfo() As Long
            Get
                Return m_objStatus.NetInfo
            End Get
        End Property
        Public ReadOnly Property Errors() As Long
            Get
                Return m_objStatus.Errors
            End Get
        End Property
        Public ReadOnly Property ErrSockets() As Long
            Get
                Return m_objStatus.ErrSockets
            End Get
        End Property
        Public ReadOnly Property Requests() As Long
            Get
                Return m_objStatus.Requests
            End Get
        End Property
        'Protocol '*************************
        'Traffic ****************************
        Public ReadOnly Property MsgMainChat() As Long
            Get
                Return m_objStatus.MsgMainChat
            End Get
        End Property
        Public ReadOnly Property MsgPM() As Long
            Get
                Return m_objStatus.MsgPM
            End Get
        End Property
        Public ReadOnly Property Searchs() As Long
            Get
                Return m_objStatus.Searchs
            End Get
        End Property
        Public ReadOnly Property MyINFOs() As Long
            Get
                Return m_objStatus.MyINFOs
            End Get
        End Property
        Public ReadOnly Property TotalSent() As Long
            Get
                Return m_objStatus.TotalSent
            End Get
        End Property
        Public ReadOnly Property TotalReceived() As Long
            Get
                Return m_objStatus.TotalReceived
            End Get
        End Property
        Public ReadOnly Property SpeedSend() As Long
            Get
                Return m_objStatus.SpeedSend
            End Get
        End Property
        Public ReadOnly Property SpeedRecived() As Long
            Get
                Return m_objStatus.SpeedRecived
            End Get
        End Property
        '***********************************
    End Class

    <ComVisible(False)> _
    Public Class clsTimersAPI
        Private m_objTimerAPI As Object
        Public Sub New(Optional ByVal oTimerAPI As Object = Nothing)
            If oTimerAPI Is Nothing Then
                m_objTimerAPI = Core.oTimersAPI
            Else
                m_objTimerAPI = oTimerAPI
            End If
        End Sub
        Public ReadOnly Property Count() As Integer
            Get
                Return m_objTimerAPI.Count
            End Get
        End Property
        Public Function Add() As Integer
            Return m_objTimerAPI.Add
        End Function
        Public Function Item(ByVal Index As Integer) As clsTimer
            Dim oTimer As Object = m_objTimerAPI.Item(Index)
            Return New clsTimer(oTimer)
        End Function
        Public Sub Remove(ByVal iIndex As Integer)
            m_objTimerAPI.Remove(iIndex)
        End Sub
    End Class

    <ComVisible(False)> _
    Public Class clsTimer
        Private m_objTimer As Object
        Public Sub New(ByVal m_objTimer As Object)
            m_objTimer = m_objTimer
        End Sub
        Public Property Enabled() As Boolean
            Get
                Return m_objTimer.Enabled
            End Get
            Set(ByVal value As Boolean)
                m_objTimer.Enabled = value
            End Set
        End Property
        Public Sub EnableTimer(ByVal lInterval As Long)
            m_objTimer.EnableTimer(lInterval)
        End Sub
        Public Sub Enable()
            m_objTimer.Enable()
        End Sub
        Public Sub Disable()
            m_objTimer.Disable()
        End Sub
        Public Sub Reset()
            m_objTimer.Reset()
        End Sub
        Public Sub Disponse()
            m_objTimer.Disponse()
        End Sub
    End Class
End Namespace
